package empresa;

import empresa.Sistema.Retorno;
public class Persona {

 private NodoPersona inicio;

 public NodoPersona  getNodoPersona(){
    return inicio;
}
	 
	 public Persona() {
		this.inicio = null;	
	 }


	public Retorno asignarPersona(int ci, String nombre) {
		if (! buscarCi(ci)){
			NodoPersona nuevo = new NodoPersona(ci,nombre);
			nuevo.setSig(inicio);
                        if(inicio!=null){
                            inicio.setAnt(nuevo);
                        }
			this.inicio=nuevo;
			return Retorno.OK;
		}else{ 
			System.out.print("Ya existe persona "); 
			return Retorno.ERROR; 
		}
	}
	/*public Retorno asignarPersona(int ci, String nombre) {
		if (! buscarCi(ci)){
			NodoPersona nuevo = new NodoPersona(ci,nombre);
			nuevo.setSig(inicio);
                        if(inicio!=null){
                            inicio.setAnt(nuevo);
                        }
			this.inicio=nuevo;
			return Retorno.OK;
		}else{
			System.out.print("Ya existe persona ");
			return Retorno.ERROR;
		}
	}*/
	 public boolean buscarCi(int ci){
		 NodoPersona aux= this.inicio;
		 while(aux!= null && ! (aux.getCi()==ci))
			 aux=aux.getSig(); 
		if (aux == null)
			return false;
		else
			return  true;
		}
	 public void ListarPersonas() {
		 ListarPersonas(inicio);
	 }

	private void ListarPersonas(NodoPersona p) {
            if(p!=null){
                if (p.getSig()==null){
			System.out.println(p.getCi()+" - "+ p.getNombre());
		}else{
			ListarPersonas(p.getSig());
			System.out.println(p.getCi()+" - "+ p.getNombre());
		}
            }
	}

	public void eliminarPersonas(int ci) {
		 this.inicio=eliminarPersona(inicio,ci);
	}



        private NodoPersona eliminarPersona(NodoPersona p, int ci) {
        if (p!=null){
            if(p.getCi()==ci){
	        if(p.getSig()!=null){
	               NodoPersona elSig=p.getSig();
	               elSig.setAnt(p.getAnt());
	               if(p.getAnt()!=null){
	                     NodoPersona elAnt=p.getAnt();
	                     elAnt.setSig(p.getSig());
	               }else{
                           p=p.getSig();
                       }
	        }else{
                    if(p.getAnt()!=null)
                       p.getAnt().setSig(null);
                    else
                        return null;
                }
	    }else
                eliminarPersona(p.getSig(),ci);
         }
        return p;
      }

	/*private void eliminarPersona(NodoPersona p,int ci) {
		if (p!=null){
				if(p.getCi()==ci){
	                if(p.getSig()!=null){
	                   NodoPersona elSig=p.getSig();
	                   elSig.setAnt(p.getAnt());
	                   if(p.getAnt()!=null){
	                       NodoPersona elAnt=p.getAnt();
	                       elAnt.setSig(p.getSig());
	                     }
	                }else
	                   p.getAnt().setSig(null);

	            }else
				    eliminarPersona(p.getSig(),ci);
         }
      }
          */
	
	
	public NodoPersona devolverPersona(int ci){
		 NodoPersona aux= this.inicio;
		 while(aux!= null && ! (aux.getCi()==ci))
			 aux=aux.getSig(); 
		if (aux == null)
			return null;
		else
			return  aux;
		}


	 
}



class NodoPersona {
	//private String ci;
	private int ci;
	private String nombre;
	private NodoPersona sig;
	private NodoPersona ant;
	
	public NodoPersona(int ci,String nombre) {
		this.ci = ci;
		this.nombre = nombre;
		this.sig = null;
	}

	public int getCi() {
		return ci;
	}
	public void setCi(int ci) {
		this.ci = ci;
	}	
	
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	
	public NodoPersona getSig() {
		return sig;
	}


	public void setSig(NodoPersona sig) {
		this.sig = sig;
	}
	
	public NodoPersona getAnt() {
		return ant;
	}


	public void setAnt(NodoPersona ant) {
		this.ant = ant;
	}	
	
	
	 

}